<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            background-color: pink;
        }
    </style>
</head>

<body>
    <div id="test"></div>

    <!-- 引入核心库。全局出现React对象-->
    <script type="text/javascript" src="./React-js/16.8/react.development.js"></script>
    <!-- 用于支持react操作DOM。全局出现ReactDOM对象-->
    <script text="text/javascript" src="./React-js/16.8/react-dom.development.js"></script>
    <!-- 用于将jsx转换为js -->
    <script text="text/javascript" src="./React-js/16.8/babel.min.js"></script>
    <!-- 用于对组件标签属性进行限制。全局出现PropTypes对象 -->
    <script src="./React-js/16.8/prop-types.js"></script>

    <script type="text/babel">
        // 定义类组件
        class Weather extends React.Component {

            render() {
                console.log(this);
                // 注意：props是只读的
                this.props.speak()
                return (
                    <ul>
                        <li>姓名：{this.props.name}</li>
                        <li>性别：{this.props.sex}</li>
                        <li>年龄：{this.props.age+1}-----</li>
                    </ul>
                )
            }
        }
        // propTypes：给类加规则
        Weather.propTypes = {
            // 在15以及以下版本
            // name:React.PropTypes.string
            // 16版本及以上，需要通过引入PropTypes对象
            name:PropTypes.string,
            sex:PropTypes.string,
            age:PropTypes.number.isRequired,  // isRequired。必传
            speak: PropTypes.func  // 限制为函数
        }
        // 设置不传时的默认值
        Weather.defaultProps = {
            sex:'我是默认值'
        }

        // 渲染组件到页面
        ReactDOM.render(<Weather name="song" age={666} speak={fun}/>, document.getElementById('test'))

        function fun (){
            console.log('我是函数');
        }
    </script>
</body>

</html>